The present invention relates to flash memories and, more particularly, to fast, low-power reading of data stored in a flash memory, with particular application to soft bits used in error correction.
Some flash memory storage systems use “soft bits” when attempting to correct errors in data read from the memory. The term “soft bits” refers to high-resolution reading from the memory cells, which goes beyond the true resolution of the data stored into the memory cells. For example, in a two-bits-per-cell memory the threshold voltage window of the cells is divided into four non-overlapping regions, each corresponding to one of the four possible data values stored in a cell—{“00”, “01”, “10”, “11”}. Each region corresponds to one state of the cell.
Normal reading (without soft bits) identifies each read cell as being in one of the four states, thus associating one of the four data values with the cell. Reading soft bits from the memory (in this example) means that we identify each cell as being in one of more than four states—for example in one of eight states, where each of the four original states is split into two higher-resolution states.
The simplest and most common way to do that (but not the only one) is by placing a reference reading voltage in the middle of each of the four non-overlapping threshold voltage regions, thus identifying whether the cell is in the upper or lower half of the region.
Some storage systems use more than one soft bit—for example using two soft bits that divide each original state into four new states. Also, the use of soft bits is not limited to two-bits-per-cell flash memories—one can use a four-bits-per-cell memory (having originally sixteen states) and apply one or more soft bits on top of the sixteen states, thus generating 32 or more new states.
The advantage of using soft bits when reading data from a flash memory comes into effect when having to correct errors in the data, and especially when the number of errors is relatively high.
The soft bits provide useful information to the decoder attempting to reconstruct the originally-written data, as the soft bits allow better estimation of the reliability of each bit stored in the flash device based on the probabilities for different errors to appear in the data.
This use of soft bits is especially useful and convenient to use with soft decoders (not to be confused with soft bits). Soft decoders are decoders that correct errors in data by attaching a reliability measure to each data bit. Having attached a reliability measure to each data bit, there are several options for operating the soft decoder. Among the popular strategies are:                Operating on the reliability values, refining and improving them, usually iteratively, until a success test (or a failure test) terminates the decoding process.        Computing a metric that determines which most probable programmed code word fits the read data.        Computing a metric for each bit of the read word separately, according to the entire read data, then using the metrics to independently decide upon the value of each bit.        
Soft bits are naturally matched with soft decoders as soft decoders can exploit the initial reliability measures, thus in some cases providing the difference between success and failure of the entire decoding process. In some cases the use of soft bits also speeds up the convergence of the decoding computation.
However, soft bits may also be used with hard decoders (decoders that are not soft decoders), and the technology described herein applies equally to both types of error correcting decoders.
While being very useful in correcting errors in stored data, soft bits come with a high price. Reading a soft bit requires doing additional reading operations from the memory cells, and thus slowing down the reading operation. This is easily understood—additional comparisons to read reference voltages must be done in the memory cells, and then the detected values must be transferred from the memory die to the flash controller containing the ECC decoder. Sometimes the operation of soft bit read takes longer and cost more in power than reading only the “hard bits”, this depends on the number of soft bits read.
There are also uses of these soft bits (higher resolution bits) other than decoding. For example statistical parameters with respect to the data can be employed for improving the read threshold parameters employed.
While in other scenarios (for example ECC in a communication channel) all soft bits are usually read anyway, it is typically the case in decoders, that use soft bits for reading data from a memory, that initially only the “hard” bits are read. Then if it turns out the raw data is too noisy and the decoding does not succeed—soft bits are read and added to the decoding computations. It is even possible to have multiple stages of this “trial and error” method—first reading one soft bit, and then if the decoding still fails—reading a second soft bit and so on. This way no time is spent on reading soft bits unless successful decoding cannot be achieved without soft bits. But the basic problem still remains—if reading soft bits proves necessary, a high price in time is paid.
In addition, unnecessary power is spent on sensing soft bits that are not really needed, reading their values from the array of cells to the flash data register. Additional unnecessary power is spent when transferring soft bits that are not really needed from the data register to the flash controller.